iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0
佛心分享-SideProject30

打造 APR Engineer 的生產力平台,從 Flow Tracer 到 SignOff DashBoard 的落地實戰系列 第 3

【Day 03 】 IBM Spectrum LSF 實戰:找個乾淨地方好好練習派工吧

  • 分享至 

  • xImage
  •  

前言

昨天聊了怎麼搬東西進去遠端的 Linux 工作站,但 APR 工程師的日常工作,並不是直接在那個工作站上開幾個 terminal 就作業,而是會透過這個叫 LSF 的系統,把要做的事情提交到公司的運算農場(Compute Farm),讓裡面的機器幫我們做事,有點像是 AWS ,國網中心的那種概念。而接下來我們要做的 flow tracer ,也將會高度與 LSF 的機制配合 ( 雖然,理論上重寫監控的機制也是能無痛應用到其他地方 )。

今天的目標很單純,就是先在自己電腦上搭一套可以拿來練習的 LSF 環境

不用準備機房、不用準備伺服器,只要一台 Windows 加上 WSL 就可以開始

LSF 的簡歷

1992 年 ── 周松年等人於加拿大創立 Platform Computing,推出 Platform LSF

2002 年 ── 釋出 LSF 4.2 的開源版本 (GPL 授權)

2007 年 ── 開源社群基於 LSF 4.2 建立 OpenLava (高度相容的免費排程器)

2012 年 ── IBM 收購 Platform Computing,取得 LSF 與 Symphony 智慧財產權

2015 年 ── IBM 重組產品線,Platform LSF 更名為 IBM Spectrum LSF

2016–2018 年 ── IBM 提告,OpenLava 終止 2.0 以後的服務

那我直接去 IBM 下載不就好了?

我原本也是這樣想的,實際去做之才後發現

https://ithelp.ithome.com.tw/upload/images/20260806/20127932JBCzsxpycZ.png

我還有特地開 VPN 跳到美國測試 = ^ =

可能一般民眾難以合法取得可直接安裝與練習的 IBM Spectrum LSF

但我們的目的只是想學一些 LSF 的指令與應用,花一堆時間跟 IBM Portal 奮戰其實沒太大意義

那這部份我們改用 OpenLava 吧

由於 IBM 收購 Platform,OpenLava 與商業版 LSF 的著作權,只有 2.0 及以下的版本才是最沒有爭議,你也能夠在 github 上找到對應的版本,至於 OpenLava 3.x / 4.x,你可能會在西台灣的網站上找到不少備份載點,使用應該是合法的,散播就不合法了,就留給各位自己斟酌 XD

今天的目標

Window

    └── WSL2 Ubuntu 24.04

        └── OpenLava x.

            ├── LIM

            ├── RES

            ├── SBATCHD

            └── MBATCHD —→ Master Host 才需要起

本質上只有一台機器,他同時會是:

  • Submit Host
  • Execution Host
  • Master Host

這對練習而言已經完全足夠,沒必要去搞另一台電腦當 Execution Host ,但如果你手上剛好有空閒的電腦或雲端機器的話 ,你確實可以嘗試看看,注意Batch machine 也要裝好 openlava ,設定好 ssh ,然後你要用 NFS 把資料夾都掛在一起,看起來會像這樣

[ NFS Server ( Master / Storage ) ]
│  共享 /data 與 /home
├───► [ Batch Machine 1 ] (掛載到 /data, /home)
├───► [ Batch Machine 2 ] (掛載到 /data, /home)
└───► [ Batch Machine 3 ] (掛載到 /data, /home)

Ubuntu 24.04 建議安裝套件

sudo apt-get update
sudo apt-get install -y \
  build-essential \
  tcl-dev \
  libncurses-dev \
  libtirpc-dev \
  libnsl-dev
  
# build-essential	gcc / make 等編譯工具
# tcl-dev	OpenLava 編譯需要 Tcl
# libncurses-dev	終端相關函式庫
# libtirpc-dev	提供 rpc/types.h(新版 glibc 已移除舊 RPC 標頭)
# libnsl-dev	提供 rpcsvc/ypclnt.h(NIS/YP 標頭)

設定主機名稱與 hosts

因為我們是單機,主機名稱設為 master

sudo hostnamectl set-hostname master

編輯 /etc/hosts,讓 master 對應本機真實 IP(不可以填錯)

127.0.0.1 localhost master

確認一下

getent hosts master
ping -c1 master

Note:OpenLava 會以 hostname 找 master。若 hosts 指到錯誤 IP,會造成有些指令像lsid 可能仍可用,但 bhosts 這類的指令會失敗。

configure / make / make install

把你的 openlava 解壓縮後進入,然後

./configure --prefix=/opt/openlava \
  CFLAGS="-I/usr/include/tirpc -fcommon" \
  CPPFLAGS="-I/usr/include/tirpc" \
  LIBS="-ltirpc -lnsl"

make -j 16
sudo make install

安裝後的目錄 looks like

/opt/openlava/
  bin/      # lsid、bhosts、bsub 指令
  sbin/     # lim、res、sbatchd、mbatchd 服務
  etc/      # 設定檔
  lib/      # 函式庫
  log/      # daemon log
  work/     

複製設定與啟動腳本

make install 不完整部署設定,需手動複製:

sudo cp -rf /你的 openlava 路徑/config/* /opt/openlava/etc/
sudo cp -f  /opt/openlava/etc/openlava /etc/init.d/
sudo cp -f  /opt/openlava/etc/openlava.sh  /etc/profile.d/
sudo cp -f  /opt/openlava/etc/openlava.csh /etc/profile.d/
sudo chmod 755 /etc/init.d/openlava

建立 openlava 管理帳號

帳號名稱需與 lsf.cluster.openlava 中的 Administrators 一致

sudo groupadd --system openlava
sudo useradd --system -g openlava -d /opt/openlava -s /sbin/nologin openlava
sudo mkdir -p /opt/openlava/work/openlava/logdir
sudo chown -R openlava:openlava /opt/openlava

一些主要設定檔介紹

檔案 用途
/opt/openlava/etc/lsf.conf 路徑、埠號、認證等主設定
/opt/openlava/etc/lsf.cluster.openlava 主機清單與管理員
/opt/openlava/etc/lsf.shared 叢集名稱、資源定義
/opt/openlava/etc/lsb.queues 佇列定義
/opt/openlava/etc/lsb.hosts 主機 / 主機群組

單機範例

編輯 /opt/openlava/etc/lsf.cluster.openlava:! 表示該欄資訊讓他自己找

Begin   ClusterAdmins
Administrators = openlava
End     ClusterAdmins

Begin   Host
HOSTNAME     model   type   server  r1m  RESOURCES
master       !       !      1       -    ()
End     Host
  • 第一台列在 Host 區的通常會是 master 候選
  • HOSTNAME 必須與 /etc/hosts / DNS 名稱完全一致

預設埠號(lsf.conf

LSF_LIM_PORT=16322
LSF_RES_PORT=16323
LSB_MBD_PORT=16324
LSB_SBD_PORT=16325

確認一下這些埠未被其他程式占用 (通常不會)

啟動與驗證

source /opt/openlava/etc/openlava.sh
sudo /opt/openlava/etc/openlava start

最後看一下 Port 有沒有東西

ss -lntup | grep 1632

https://ithelp.ithome.com.tw/upload/images/20260806/20127932HSqOgyoXXZ.png

基本指令測試

lsid    # 顯示 cluster / master 名稱
lsload	# 查看負載
lshosts	# 查看主機系統資訊
bhosts  # 查看批次主機狀態,因為我們只有一台,所以就是自己
bqueues # 查看佇列,一般公司內部都會有很多不同的 queue,不同 queue 裡面有規個,數量不等的批次主機
bsub <cmd> # 提交工作,我們主要就是透過這個去丟工作
bjobs # 查看工作狀態
bkill <jobid>	# 終止工作
badmin reconfig	# 重載批次設定
lsadmin reconfig	# 重載 LSF/LIM 設定

打鐵趁熱,我們馬上來提交第一份自己的 job 吧,touch 一個檔案叫 test.sh

#!/bin/bash

for i in {10..60..10}; do
    sleep 10
    echo "模擬程式 --- 現在過了 ${i} 秒"
done
# -q 把 job 丟到 normal 這個 queue 裡面,lsf 會自動去找有空閒的機器去做的 job
# -n 這個 job 要占用幾個 CPU
# -o 這個 job 的執行 log
# -e 這個 job 的執行 error
bsub -q normal -n 1 -o test.log  -e test.err ./test.sh

這時候你下 bjob 就可以看到提交的工作了
https://ithelp.ithome.com.tw/upload/images/20260806/20127932mYu85ICL8W.png


上一篇
【Day 02】突破無 SSH 與 FTP 的環境:一段關於「五鬼運財」的故事
系列文
打造 APR Engineer 的生產力平台,從 Flow Tracer 到 SignOff DashBoard 的落地實戰3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言